﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VentaElectrodomesticos.Contrato;
using System.Data.SqlClient;
using VentaElectrodomesticos.Datos;
using VentaElectrodomesticos.Datos.Dto;

namespace VentaElectrodomesticos.Datos
{
    public class ClienteDAO : BaseDAO<Cliente>
    {
        protected override string getTableName()
        {
            return "persona";
        }  
      
        protected override string getTableView()
        {
            return "clientes";
        }

        public override bool insert(Cliente entity)
        {
            SqlDataReader dataReader = this.getRows("SELECT * FROM " + Config.tableSpace + "tipoPersona WHERE nombre='Cliente'");
            dataReader.Read();
            entity.Tipo_Id = Convert.ToInt32(dataReader["id"]);
            return base.insert(entity);
        }

        public List<ClientePremiumDTO> getClientesPremium(long sucursal, int fecha)
        {
            List<SqlParameter> parameters = new List<SqlParameter>();
            parameters.Add(new SqlParameter("@sucursal", sucursal));
            parameters.Add(new SqlParameter("@anio", fecha));

            SqlDataReader reader = this.executeStoredProcedure(Config.tableSpace + "clientesPremium", parameters);

            List<ClientePremiumDTO> entities = new List<ClientePremiumDTO>();
            while (reader.Read())
            {
                ClientePremiumDTO clientePremium = new ClientePremiumDTO();
                clientePremium.apellido = (String)reader["apellido"];
                clientePremium.dni = (String)reader["dni"];

                if (reader["dniEmp"] != typeof(System.DBNull))
                {
                    clientePremium.dniEmp = (String)reader["dniEmp"];
                }

                if (reader["fechaUltComp"] != typeof(System.DBNull)) {
                    clientePremium.fechaUltComp = reader["fechaUltComp"].ToString();
                }

                if (reader["monto"] != typeof(System.DBNull)) {
                    clientePremium.monto = reader["monto"].ToString();
                }

                if (reader["nombre"] != typeof(System.DBNull)) {
                    clientePremium.nombre = (String)reader["nombre"];
                }

                if (reader["totalProd"] != typeof(System.DBNull))
                {
                    clientePremium.totalProd = reader["totalProd"].ToString();
                }

                entities.Add(clientePremium);
            }
            return entities;
        }
    }
}
